/**
 *  @路由权限设置
 */

/**
 *
 * @param  {Array} roles 后台返回的用户权限json
 * @return {Array} accessRoutes 过滤后的路由
 *
 */
import Layout from '@/layout' //Layout 是架构组件，不在后台返回，在文件里单独引入
import { _404Route } from '@/router'
import { deepClone } from '@/utils'

const _import = require('@/router/_import_' + process.env.NODE_ENV) //获取组件的方法,具体实现见@/router


export default function setRoutes(roles) {
    const accsessRoutes = deepClone(roles)
    // 根据后台权限路由地址动态加载组件
    recursionRouter(accsessRoutes)
    // 尾部插入404页面
    return accsessRoutes.concat(_404Route)
}

// 递归筛选有权限的路由
const recursionRouter = function(roles = []) {
    roles.forEach((item, index) => {
        if (item) {
            if (item.component) {
                if (item.component === 'layout') {
                    item.component = Layout
                } else {
                    item.component = _import(item.component)
                }
            }
            if (item.children && item.children.length > 0) {
                recursionRouter(item.children)
            }
        }
    })
}
